home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / misc / VMM_src.lha / VMM / macros.i < prev    next >
Encoding:
Text File  |  1995-12-16  |  5.6 KB  |  164 lines

  1.                XREF           _PrintDebugMsg
  2.                XREF           _PrintCallingTask
  3.                XREF           _CheckMemList
  4.                XREF           _VirtMemSema
  5.                XREF           _OrigAllocMem
  6.                XREF           _OrigFreeMem
  7.  
  8. **********************************************************************
  9.  
  10. PRINT_DEB      MACRO
  11.                IFD            DEBUG
  12.  
  13.                movem.l        d0-d1/a0-a1/a6,-(sp)
  14.                move.l         4,a6
  15.  
  16.                IFC            '\2',''
  17.                
  18.                clr.l          -(sp)
  19.  
  20.                ELSE
  21.  
  22.                move.l         \2,-(sp)
  23.  
  24.                ENDC
  25.  
  26.                pea            DebugString\@(pc)
  27.                jsr            _PrintDebugMsg
  28.                add.w          #8,sp
  29.                movem.l        (sp)+,d0-d1/a0-a1/a6
  30.                bra            GoOn\@
  31.  
  32. DebugString\@  dc.b           \1,0
  33.  
  34.                ds.w           0
  35. GoOn\@
  36.                ENDC
  37.                ENDM
  38.  
  39. **********************************************************************
  40.  
  41. CHECK_CONSISTENCY   MACRO
  42.                IFD            DEBUG
  43.                IFD            TRACE_MEM
  44.                movem.l        d0-d1/a0-a1,-(sp)
  45.                jsr            _CheckMemList
  46.                movem.l        (sp)+,d0-d1/a0-a1
  47.                ENDC
  48.                ENDC
  49.                ENDM
  50.  
  51. **********************************************************************
  52.  
  53. PRINT_MEM      MACRO
  54.                IFD            TRACE_MEM
  55.                PRINT_DEB      \1,\2
  56.                ENDC
  57.                CHECK_CONSISTENCY
  58.                ENDM
  59.  
  60. **********************************************************************
  61.  
  62. MEM_FORBID     MACRO          * to be called with SysBase in A6
  63.                PRINT_MEM      "Obtaining semaphore"
  64.  
  65.                lea            _VirtMemSema,a0
  66.                IFD            USE_OWN_SEMAPHORES
  67.                jsr            VMMObtainSemaphore
  68.                ELSE
  69.                jsr            _LVOObtainSemaphore(a6)
  70.                ENDC
  71.                PRINT_MEM      "Semaphore obtained"
  72.                ENDM
  73.  
  74. MEM_PERMIT     MACRO
  75.                PRINT_MEM      "Releasing semaphore"
  76.                lea            _VirtMemSema,a0
  77.                IFD            USE_OWN_SEMAPHORES
  78.                jsr            VMMReleaseSemaphore
  79.                ELSE
  80.                jsr            _LVOReleaseSemaphore(a6)
  81.                ENDC
  82.                ENDM
  83.  
  84. **********************************************************************
  85.  
  86. IN_VM          MACRO  * register, label to branch if out of range
  87.                cmp.l          _VirtAddrEnd,\1
  88.                bhi            \2
  89.                cmp.l          _VirtAddrStart,\1
  90.                bcs            \2
  91.                ENDM
  92.  
  93. **********************************************************************
  94.  
  95. GET_SIGNAL     MACRO          * Called with A6 = SysBase
  96.                               * d0-d1,a0-a1 are scratch
  97.                               * upon return d0.b contains the signal number
  98.                moveq          #-1,d0
  99.                jsr            _LVOAllocSignal(a6)
  100.                tst.b          d0
  101.                bge            GotSignal\@
  102.  
  103.                PRINT_DEB      "Had to use SIGB_SINGLE"
  104.                moveq          #EMERGENCY_SIGNAL,d0
  105. GotSignal\@    
  106.                ENDM
  107.  
  108. **********************************************************************
  109.  
  110. RELEASE_SIGNAL MACRO          * Called with A6 = SysBase
  111.                               * d0 = SigBit
  112.                               * d0-d1,a0-a1 are scratch
  113.  
  114.                cmp.b          #EMERGENCY_SIGNAL,d0
  115.                beq            DontFree\@
  116.                jsr            _LVOFreeSignal(a6)
  117. DontFree\@
  118.                ENDM
  119.  
  120. **********************************************************************
  121.  
  122. ALIGN_LONG     MACRO
  123.                cnop           0,4
  124.                ENDM
  125.  
  126. **********************************************************************
  127.  
  128. PRINT_RANGE    MACRO
  129.                * a0: start of range, not modified
  130.                * prints 32 longwords starting at a0
  131.                PRINT_DEB      "0000: %lx",$00(a0)
  132.                PRINT_DEB      "0004: %lx",$04(a0)
  133.                PRINT_DEB      "0008: %lx",$08(a0)
  134.                PRINT_DEB      "000c: %lx",$0c(a0)
  135.                PRINT_DEB      "0010: %lx",$10(a0)
  136.                PRINT_DEB      "0014: %lx",$14(a0)
  137.                PRINT_DEB      "0018: %lx",$18(a0)
  138.                PRINT_DEB      "001c: %lx",$1c(a0)
  139.                PRINT_DEB      "0020: %lx",$20(a0)
  140.                PRINT_DEB      "0024: %lx",$24(a0)
  141.                PRINT_DEB      "0028: %lx",$28(a0)
  142.                PRINT_DEB      "002c: %lx",$2c(a0)
  143.                PRINT_DEB      "0030: %lx",$30(a0)
  144.                PRINT_DEB      "0034: %lx",$34(a0)
  145.                PRINT_DEB      "0038: %lx",$38(a0)
  146.                PRINT_DEB      "003c: %lx",$3c(a0)
  147.                PRINT_DEB      "0040: %lx",$40(a0)
  148.                PRINT_DEB      "0044: %lx",$44(a0)
  149.                PRINT_DEB      "0048: %lx",$48(a0)
  150.                PRINT_DEB      "004c: %lx",$4c(a0)
  151.                PRINT_DEB      "0050: %lx",$50(a0)
  152.                PRINT_DEB      "0054: %lx",$54(a0)
  153.                PRINT_DEB      "0058: %lx",$58(a0)
  154.                PRINT_DEB      "005c: %lx",$5c(a0)
  155.                PRINT_DEB      "0060: %lx",$60(a0)
  156.                PRINT_DEB      "0064: %lx",$64(a0)
  157.                PRINT_DEB      "0068: %lx",$68(a0)
  158.                PRINT_DEB      "006c: %lx",$6c(a0)
  159.                PRINT_DEB      "0070: %lx",$70(a0)
  160.                PRINT_DEB      "0074: %lx",$74(a0)
  161.                PRINT_DEB      "0078: %lx",$78(a0)
  162.                PRINT_DEB      "007c: %lx",$7c(a0)
  163.                ENDM
  164.